//
// Created by user on 2022/2/23.
//
/**
 * STL中map的使用
 */
#include <map>
#include <iostream>
#include <string>
using namespace std;




int main(){
    //定义map
    map<int, string> mapStudent;
    //--------------------- 插入数据 ---------------------
    //使用insert函数插入pair
    mapStudent.insert(pair<int, string>(000, "student_zero"));
    // 第二种 用insert函数插入value_type数据
    mapStudent.insert(map<int, string>::value_type(001, "student_one"));
    // 第三种 用"array"方式插入
    mapStudent[123] = "student_first";
    mapStudent[456] = "student_second";
    /**
     * 以上三种用法，虽然都可以实现数据的插入，但是它们是有区别的，当然了第一种和第二种在效果上是完成一样的，用insert函数插入数据，
     * 在数据的 插入上涉及到集合的唯一性这个概念，即当map中有这个关键字时，insert操作是不能在插入数据的，但是用数组方式就不同了，
     * 它可以覆盖以前该关键字对 应的值，
     */

    //------------------------------------- 查找数据 ------------------------------------

    iter = mapStudent.find("123");

    if(iter != mapStudent.end())
        cout<<"Find, the value is"<<iter->second<<endl;
    else
        cout<<"Do not Find"<<endl;

   //----------------------------------- 删除 --------------------------------------------
    /**
        //迭代器刪除
        iter = mapStudent.find("123");
        mapStudent.erase(iter);
        //用关键字刪除
        int n = mapStudent.erase("123"); //如果刪除了會返回1，否則返回0
        //用迭代器范围刪除 : 把整个map清空
        mapStudent.erase(mapStudent.begin(), mapStudent.end());
        //等同于mapStudent.clear()
     */
    int n = mapStudent.erase("123");

    return 0;
}